/**
 * -------------------
 */


//class Solution {
//    public int removeDuplicates(int[] nums) {
//        int slow = 0, fast = 1;
//        while (fast < nums.length) {
//            while (nums[slow] == nums[fast]) {
//                fast++;
//                if (fast == nums.length) {
//                    return slow + 1;
//                }
//            }
//            slow++;
//            nums[slow] = nums[fast];
//            fast++;
//        }
//        return slow + 1;
//    }
//}

//二刷
class Solution {
    public int removeDuplicates(int[] nums) {
        /**
         * 初始：i = 0 ，j = 1；分别指向第一、二元素
         *    比较对象 nums[i] == nums[j]
         *   一直将j覆盖到i，前提是j不越界 且 i j 不相等。相等的话，就找下一个不等的j
         */
        int i = 0, j = 1;
        while (j < nums.length){
            while (nums[i] == nums[j]){
                j++;
                if(j == nums.length) return i+1;
            }
            nums[++i] = nums[j];
            j++;
        }
        return i+1;
    }
}